【試行錯誤中】AI駆動開発のワークフロー

開発を持続可能なものにするために、現在、個人開発というフィールドで試行錯誤しながら運用しているAI駆動開発のプロセスについてまとめてみます。 開発の全体像としては、現時点では添付の図のような形で行っています。

1. 構想と全体設計(Gemini)

開発のスタートは、Geminiとの対話から始まります。 ここでは、具体的なコードを書くことよりも、どのようなものを作成したいかを伝えて、アイデアのブラッシュアップに重点を置いています。

壁打ちを行いながら「何を作るか」を明確にし、この段階で機能の実現順序(ロードマップ)についても大まかに決定します。

2. 計画の具体化と調査(GitHub Copilot Plan Mode)

Geminiで作成した全体像をもとに、実際の開発環境へ落とし込むフェーズです。 ここではGitHub CopilotのPlanモードを活用します。具体的には以下の2点を行っています。

  • 実現順序ごとの整理: Geminiで決めた大まかな流れに対し、必要な情報や実装のストーリーを整理します。
  • 既存コードの調査: すでに作成済みの機能がある場合、Copilotに既存の実装状況を調査させ、新しい機能との整合性を確認します。

3. 詳細設計から実装へ(SpecKit Workflow)

実装に向けた最終調整とドキュメント化を行うため、GitHub製のツール「SpecKit」を使用します。 実装に向けて不備がないかを確認しながら、資料も残すという観点で調整を進めています。

具体的なコマンドの流れは以下の通りです。

  • specifyコマンド(仕様策定) 「何を作るか(WHAT)」と「なぜ作るか(WHY)」を定義します。 技術的な実装方法はあえて含めず、ユーザーストーリーや機能要件にフォーカスして spec.md として仕様書を出力します。
  • planコマンド(詳細計画) 「どう作るか(HOW)」を策定します。 技術スタックやアーキテクチャを決定し、実装計画書(plan.md)を作成します。この際、シーケンス図やER図を出力させ、視覚的に構造を把握できるようにします。特にMermaidなどは汎用性が非常に高く、こうした図の出力に適しています。
  • taskコマンド(タスク設定) 計画を実行可能な単位に細分化し、チェックリスト形式の tasks.md を生成します。 各タスクはAIが自律的に実行できる粒度まで分解されます。
  • implementコマンド(実装) 作成されたタスクリストに基づき、実際にコードの生成と修正を行います。 タスクを一つずつ消化していく形で実装が進みます。

まとめ

以上が、現在採用しているAI駆動開発のプロセスです。 開発を持続可能なものにするため、個人開発の場でAIモデルの特性に合わせて役割を分担させ、段階的に解像度を上げていくフローを模索しています。

まだ試行錯誤の途中ではありますが、手戻りを防ぎつつ実装を着実に進めるための、現時点での解として運用しています。